Skip to content

40.'use strict' 的作用是什么

旨在减少常见错误,更健壮、安全

- 意外创建全局变量 // message = "Hello JavaScript! "; //  这一行代码就会抛出 ReferenceError 
- 不能使用 delete 删除变量 var x; delete x; // !!! 语法错误
- 不能使用保留子做变量名 public private protected static extends implements let var yield var private = 123; // !!! 语法错误

var public = 'hello'; // !!! 语法错误 - 为只读属性赋值报错

js
    var obj2 = { get x() { return 17; } };
    obj2.x = 5; // 抛出TypeError错误

    var obj1 = {};
    Object.defineProperty(obj1, "x", { value: 42, writable: false });
    obj1.x = 9; // 抛出TypeError错误

    delete Object.prototype; // 抛出TypeError错误

    var o = { p: 1, p: 2 }; // !!! 语法错误
- eval不在为上下文中创建变量或函数
- 禁止使用with语句
- 全局作用域的函数中的this不再指向全局而是undefined
  • arguments 禁用

在 MIT 许可下发布